const WebSocket = require('ws');
const http = require('http');

// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'application/x-www-form-urlencoded' });
    res.end('WebSocket server\n');
});

// 创建 WebSocket 服务器
const wss = new WebSocket.Server({ server });

// 处理客户端连接
wss.on('connection', (ws) => {
    console.log('客户端连接成功');

    // 处理接收到的消息
    ws.on('message', (message) => {
        console.log(`收到消息: ${message}`);
        if (JSON.parse(message+'').type === 'ping') {
            ws.send(JSON.stringify({ type: 'ping' }))
        } else {
            // 发送回执消息给客户端
            ws.send(`服务器回执: ${message}`);
        }
    });

    // 每3秒发送消息给客户端
    const intervalId = setInterval(() => {
        if (ws.readyState === WebSocket.OPEN) {
            const now = new Date();
            const hours = now.getHours();   // 获取当前的小时
            const minutes = now.getMinutes(); // 获取当前的分钟
            const seconds = now.getSeconds(); // 获取当前的秒数
            ws.send(JSON.stringify({ hours, minutes, seconds }));
        }
    }, 3000);

    // 处理客户端断开连接
    ws.on('close', () => {
        console.log('客户端断开连接');
        clearInterval(intervalId);
    });

    // 处理错误
    ws.on('error', (error) => {
        console.error(`WebSocket 错误: ${error}`);
    });
});

// 监听端口
const port = 8080;
server.listen(port, () => {
    console.log(`服务器开启端口号 ${port}`);
});
